home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Internet Tools (InfoMagic)
/
Internet Tools.iso
/
dos_win
/
winsock
/
maillist
/
94-05.Z
/
94-05
/
000234_news@bigblue.oit.unc.edu_Sat May 17 05:31:09 1994.msg
< prev
next >
Wrap
Internet Message Format
|
1994-05-31
|
16KB
Received: from bigblue.oit.unc.edu by SunSITE.Unc.EDU (5.65c+IDA/FvK-1.07) with SMTP
id AB08502; Wed, 18 May 1994 17:55:12 -0400
Received: by bigblue.oit.unc.edu (AIX 3.2/UCB 5.64/4.03)
id AA16868; Wed, 18 May 1994 17:42:58 -0400
Received: from GATEWAY by bigblue with netnews
for winsock@sunsite.unc.edu (winsock@sunsite.unc.edu)
To: winsock@sunsite.unc.edu
Date: 17 May 1994 05:31:09 GMT
From: swelch@nmsu.edu (Scott E. Welch)
Message-Id: <2r9kqt$qlm@dns1.NMSU.Edu>
Organization: New Mexico State University, Las Cruces, NM
Sender: ses
Subject: Need help getting started
I am having problems getting up to speed with Windows Sockets. For
starters I am trying to send a packet from one place to another. The
recv() and recvfrom() functions seem to wait infinitely. The send() and
sendto() function always returns with WSAEINVAL.
swelch@nmsu.edu
--- cut ----
//GetProfileString()
#include <windows.h>
#define _INC_WINDOWS
#include <winsock.h>
WSADATA wsaData;
void SocketError ( char *,int );
long FAR PASCAL _export WndProc (HWND, UINT, UINT, LONG) ;
unsigned char OpenWinsock ( void );
unsigned char BodyWinsock ( void );
void CloseWinsock ( void );
char appname[40];
int PASCAL WinMain(HANDLE hInstance,HANDLE hPrevInstance,LPSTR lpszCmdLine,
int nCmdShow)
{
static char szAppName[]="sock";
HWND hwnd;
MSG msg;
WNDCLASS wndclass;
if(OpenWinsock()) return(0);
if(!hPrevInstance)
{
wndclass.style =CS_HREDRAW|CS_VREDRAW;
wndclass.lpfnWndProc =WndProc;
wndclass.cbClsExtra =0;
wndclass.cbWndExtra =0;
wndclass.hInstance =hInstance;
wndclass.hIcon =LoadIcon(NULL,IDI_APPLICATION);
wndclass.hCursor =LoadCursor(NULL,IDC_ARROW);
wndclass.hbrBackground=GetStockObject(WHITE_BRUSH);
wndclass.lpszMenuName =NULL;
wndclass.lpszClassName=szAppName;
RegisterClass (&wndclass) ;
}
hwnd=CreateWindow (szAppName,appname,WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,CW_USEDEFAULT,250,280,NULL,NULL,hInstance,NULL);
ShowWindow(hwnd,nCmdShow);
UpdateWindow(hwnd);
while(GetMessage(&msg,NULL,0,0))
{
TranslateMessage(&msg);
DispatchMessage (&msg);
}
CloseWinsock();
return(msg.wParam);
}
long FAR PASCAL _export WndProc(HWND hwnd,UINT message,UINT wParam,LONG lParam)
{
static HWND hwndButton[64];
char sa[8];
int i;
switch(message)
{
case WM_CREATE:
/*
for(i=0;i<64;i++)
{
wsprintf(sa,"%02u",i);
hwndButton[i]=CreateWindow("button",sa,
WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON,(i&7)*30,(i>>3)*30,30,30,
hwnd,i,((LPCREATESTRUCT)lParam)->hInstance,NULL);
}
*/
PostMessage(hwnd,WM_COMMAND,0,0);
return(0);
case WM_SIZE:
break;
case WM_PAINT:
break;
case WM_COMMAND:
BodyWinsock();
PostQuitMessage(0);
/*
switch(wParam)
{
}
as seen in the CreateWindow() above (WM_CREATE) the wParam is 0-63
*/
return(0);
case WM_DRAWITEM:
break;
case WM_DESTROY:
PostQuitMessage(0);
return(0);
}
return DefWindowProc(hwnd,message,wParam,lParam);
}
unsigned char OpenWinsock ( void )
{
unsigned char gstring[80];
int ia;
HOSTENT *host;
if(WSAStartup(0x0101,&wsaData))
{
MessageBox(NULL,"Could not find a usable WINSOCK.DLL","",MB_OK);
return(1);
}
if(LOBYTE(wsaData.wVersion)!=1 || HIBYTE(wsaData.wVersion)!=1)
{
MessageBox(NULL,"Could not find a usable WINSOCK.DLL","",MB_OK);
WSACleanup();
return(1);
}
wsaData.wVersion=0x0101;
wsaData.wHighVersion=0x0101;
ia=gethostname(gstring,80);
if(ia)
{
SocketError("gethostname error",WSAGetLastError());
}
else
{
// MessageBox(NULL,gstring,"gethostname SUCCESS",MB_OK);
host=gethostbyname(gstring);
if(host==NULL)
{
SocketError("gethostbyname error",WSAGetLastError());
return(1);
}
else
{
if(host[0].h_addrtype!=2)
{
MessageBox(NULL,"Unknown addres type",appname,MB_OK);
return(1);
}
if(host[0].h_length!=4)
{
MessageBox(NULL,"Unknown address length",appname,MB_OK);
return(1);
}
wsprintf(appname,"%s %u.%u.%u.%u S",host[0].h_name,(unsigned char)host[0].h_addr_list[0][0],(unsigned char)host[0].h_addr_list[0][1],(unsigned char)host[0].h_addr_list[0][2],(unsigned char)host[0].h_addr_list[0][3]);
// MessageBox(NULL,appname,"gethostbyname SUCCESS",MB_OK);
}
}
return(0);
}
unsigned char BodyWinsock ( void )
{
unsigned char gstring[80];
SOCKET sock;
int ia;
SOCKADDR_IN sin;
SOCKADDR s;
sock=socket(PF_INET,SOCK_DGRAM,0);
if(sock==INVALID_SOCKET)
{
SocketError("socket error",WSAGetLastError());
return(1);
}
// select() to check status before sending another
/* ia=sendto(sock,gstring,20,MSG_DONTROUTE,(LPSOCKADDR)&sin,sizeof(sin)); */
wsprintf(gstring,"%s","HELLO THERE");
sin.sin_family=AF_INET;
sin.sin_addr.s_net =192;
sin.sin_addr.s_host =9;
sin.sin_addr.s_lh =200;
sin.sin_addr.s_impno=6;
s.sa_family=AF_INET;
s.sa_data[2]=192;
s.sa_data[3]=9;
s.sa_data[4]=200;
s.sa_data[5]=6;
/*
ia=connect(sock,(LPSOCKADDR)&sin,sizeof(sin));
if(ia)
{
SocketError("connect error",WSAGetLastError());
}
ia=send(sock,gstring,20,MSG_DONTROUTE);
*/
/* ia=sendto(sock,gstring,20,0,(LPSOCKADDR)&sin,sizeof(sin));*/
ia=sendto(sock,gstring,20,MSG_DONTROUTE,&s,sizeof(s));
if(ia!=20)
{
SocketError("sendto error",WSAGetLastError());
}
closesocket(sock);
}
void CloseWinsock ( void )
{
WSACleanup();
}
----cut----
----cut----
//GetProfileString()
#include <windows.h>
#define _INC_WINDOWS
#include <winsock.h>
WSADATA wsaData;
void SocketError ( char *,int );
long FAR PASCAL _export WndProc (HWND, UINT, UINT, LONG) ;
unsigned char OpenWinsock ( void );
unsigned char BodyWinsock ( void );
void CloseWinsock ( void );
char appname[40];
int PASCAL WinMain(HANDLE hInstance,HANDLE hPrevInstance,LPSTR lpszCmdLine,
int nCmdShow)
{
static char szAppName[]="sock";
HWND hwnd;
MSG msg;
WNDCLASS wndclass;
if(OpenWinsock()) return(0);
if(!hPrevInstance)
{
wndclass.style =CS_HREDRAW|CS_VREDRAW;
wndclass.lpfnWndProc =WndProc;
wndclass.cbClsExtra =0;
wndclass.cbWndExtra =0;
wndclass.hInstance =hInstance;
wndclass.hIcon =LoadIcon(NULL,IDI_APPLICATION);
wndclass.hCursor =LoadCursor(NULL,IDC_ARROW);
wndclass.hbrBackground=GetStockObject(WHITE_BRUSH);
wndclass.lpszMenuName =NULL;
wndclass.lpszClassName=szAppName;
RegisterClass (&wndclass) ;
}
hwnd=CreateWindow (szAppName,appname,WS_OVERLAPPEDWINDOW,
CW_USEDEFAULT,CW_USEDEFAULT,250,280,NULL,NULL,hInstance,NULL);
ShowWindow(hwnd,nCmdShow);
UpdateWindow(hwnd);
while(GetMessage(&msg,NULL,0,0))
{
TranslateMessage(&msg);
DispatchMessage (&msg);
}
CloseWinsock();
return(msg.wParam);
}
long FAR PASCAL _export WndProc(HWND hwnd,UINT message,UINT wParam,LONG lParam)
{
static HWND hwndButton[64];
char sa[8];
int i;
switch(message)
{
case WM_CREATE:
/*
for(i=0;i<64;i++)
{
wsprintf(sa,"%02u",i);
hwndButton[i]=CreateWindow("button",sa,
WS_CHILD|WS_VISIBLE|BS_PUSHBUTTON,(i&7)*30,(i>>3)*30,30,30,
hwnd,i,((LPCREATESTRUCT)lParam)->hInstance,NULL);
}
*/
PostMessage(hwnd,WM_COMMAND,0,0);
return(0);
case WM_SIZE:
break;
case WM_PAINT:
break;
case WM_COMMAND:
BodyWinsock();
PostQuitMessage(0);
/*
switch(wParam)
{
}
as seen in the CreateWindow() above (WM_CREATE) the wParam is 0-63
*/
return(0);
case WM_DRAWITEM:
break;
case WM_DESTROY:
PostQuitMessage(0);
return(0);
}
return DefWindowProc(hwnd,message,wParam,lParam);
}
unsigned char OpenWinsock ( void )
{
unsigned char gstring[80];
int ia;
HOSTENT *host;
if(WSAStartup(0x0101,&wsaData))
{
MessageBox(NULL,"Could not find a usable WINSOCK.DLL","",MB_OK);
return(1);
}
if(LOBYTE(wsaData.wVersion)!=1 || HIBYTE(wsaData.wVersion)!=1)
{
MessageBox(NULL,"Could not find a usable WINSOCK.DLL","",MB_OK);
WSACleanup();
return(1);
}
wsaData.wVersion=0x0101;
wsaData.wHighVersion=0x0101;
ia=gethostname(gstring,80);
if(ia)
{
SocketError("gethostname error",WSAGetLastError());
}
else
{
host=gethostbyname(gstring);
if(host==NULL)
{
SocketError("gethostbyname error",WSAGetLastError());
return(1);
}
else
{
if(host[0].h_addrtype!=2)
{
MessageBox(NULL,"Unknown addres type",appname,MB_OK);
return(1);
}
if(host[0].h_length!=4)
{
MessageBox(NULL,"Unknown address length",appname,MB_OK);
return(1);
}
wsprintf(appname,"%s %u.%u.%u.%u R",host[0].h_name,(unsigned char)host[0].h_addr_list[0][0],(unsigned char)host[0].h_addr_list[0][1],(unsigned char)host[0].h_addr_list[0][2],(unsigned char)host[0].h_addr_list[0][3]);
}
}
return(0);
}
unsigned char BodyWinsock ( void )
{
unsigned char gstring[80];
SOCKET sock;
int ia;
SOCKADDR s;
int ss;
sock=socket(PF_INET,SOCK_DGRAM,0);
if(sock==INVALID_SOCKET)
{
SocketError("socket error",WSAGetLastError());
return(1);
}
// select() to check status before sending another
/*
ia=connect(sock,(LPSOCKADDR)&sin,sizeof(sin));
if(ia)
{
SocketError("connect error",WSAGetLastError());
}
ia=recv(sock,gstring,20,0);
*/
ia=recvfrom(sock,gstring,20,0,&s,&ss);
if(ia==SOCKET_ERROR)
{
SocketError("recv error",WSAGetLastError());
}
else
{
MessageBox(NULL,gstring,"SUCCESS",MB_OK);
}
closesocket(sock);
}
void CloseWinsock ( void )
{
WSACleanup();
}
---- cut ----
---- cut ----
#include <windows.h>
#include <winsock.h>
void SocketError ( char *s,int e )
{
char hello[80];
switch(e)
{
case WSAEINTR: MessageBox(NULL,"WSAEINTR",s,MB_OK); break;
case WSAEBADF: MessageBox(NULL,"WSAEBADF",s,MB_OK); break;
case WSAEACCES: MessageBox(NULL,"WSAEACCESS",s,MB_OK); break;
case WSAEFAULT: MessageBox(NULL,"WSAEFAULT",s,MB_OK); break;
case WSAEINVAL: MessageBox(NULL,"WSAEINVAL",s,MB_OK); break;
case WSAEMFILE: MessageBox(NULL,"WSAEMFILE",s,MB_OK); break;
case WSAEWOULDBLOCK: MessageBox(NULL,"WSAEWOULDBLOCK",s,MB_OK); break;
case WSAEINPROGRESS: MessageBox(NULL,"WSAEINPROGRESS",s,MB_OK); break;
case WSAEALREADY: MessageBox(NULL,"WSAEALREADY",s,MB_OK); break;
case WSAENOTSOCK: MessageBox(NULL,"WSAENOTSOCK",s,MB_OK); break;
case WSAEDESTADDRREQ: MessageBox(NULL,"WSAEDESTADDRREQ",s,MB_OK); break;
case WSAEMSGSIZE: MessageBox(NULL,"WSAEMSGSIZE",s,MB_OK); break;
case WSAEPROTOTYPE: MessageBox(NULL,"WSAEPROTOTYPE",s,MB_OK); break;
case WSAENOPROTOOPT: MessageBox(NULL,"WSAENOPROTOOPT",s,MB_OK); break;
case WSAEPROTONOSUPPORT: MessageBox(NULL,"WSAEPROTONOSUPPORT",s,MB_OK); break;
case WSAESOCKTNOSUPPORT: MessageBox(NULL,"WSAESOCKTNOSUPPORT",s,MB_OK); break;
case WSAEOPNOTSUPP: MessageBox(NULL,"WSAEOPNOTSUPP",s,MB_OK); break;
case WSAEPFNOSUPPORT: MessageBox(NULL,"WSAEPFNOSUPPORT",s,MB_OK); break;
case WSAEAFNOSUPPORT: MessageBox(NULL,"WSAEAFNOSUPPORT",s,MB_OK); break;
case WSAEADDRINUSE: MessageBox(NULL,"WSAEADDRINUSE",s,MB_OK); break;
case WSAEADDRNOTAVAIL: MessageBox(NULL,"WSAEADDRNOTAVAIL",s,MB_OK); break;
case WSAENETDOWN: MessageBox(NULL,"WSAENETDOWN",s,MB_OK); break;
case WSAENETUNREACH: MessageBox(NULL,"WSAENETUNREACH",s,MB_OK); break;
case WSAENETRESET: MessageBox(NULL,"WSAENETRESET",s,MB_OK); break;
case WSAECONNABORTED: MessageBox(NULL,"WSAECONNABORTED",s,MB_OK); break;
case WSAECONNRESET: MessageBox(NULL,"WSAECONNRESET",s,MB_OK); break;
case WSAENOBUFS: MessageBox(NULL,"WSAENOBUFS",s,MB_OK); break;
case WSAEISCONN: MessageBox(NULL,"WSAEISCONN",s,MB_OK); break;
case WSAENOTCONN: MessageBox(NULL,"WSAENOTCONN",s,MB_OK); break;
case WSAESHUTDOWN: MessageBox(NULL,"WSAESHUTDOWN",s,MB_OK); break;
case WSAETOOMANYREFS: MessageBox(NULL,"WSAETOOMANYREFS",s,MB_OK); break;
case WSAETIMEDOUT: MessageBox(NULL,"WSAETIMEDOUT",s,MB_OK); break;
case WSAECONNREFUSED: MessageBox(NULL,"WSAECONNREFUSED",s,MB_OK); break;
case WSAELOOP: MessageBox(NULL,"WSAELOOP",s,MB_OK); break;
case WSAENAMETOOLONG: MessageBox(NULL,"WSAENAMETOOLONG",s,MB_OK); break;
case WSAEHOSTDOWN: MessageBox(NULL,"WSAEHOSTDOWN",s,MB_OK); break;
case WSAEHOSTUNREACH: MessageBox(NULL,"WSAEHOSTUNREACH",s,MB_OK); break;
case WSAENOTEMPTY: MessageBox(NULL,"WSAENOTEMPTY",s,MB_OK); break;
case WSAEPROCLIM: MessageBox(NULL,"WSAEPROCLIM",s,MB_OK); break;
case WSAEUSERS: MessageBox(NULL,"WSAEUSERS",s,MB_OK); break;
case WSAEDQUOT: MessageBox(NULL,"WSAEDQUIT",s,MB_OK); break;
case WSAESTALE: MessageBox(NULL,"WSAESTALE",s,MB_OK); break;
case WSAEREMOTE: MessageBox(NULL,"WSAEREMOTE",s,MB_OK); break;
case WSAEDISCON: MessageBox(NULL,"WSAEDISCON",s,MB_OK); break;
case WSASYSNOTREADY: MessageBox(NULL,"WSAESYSNOTREADY",s,MB_OK); break;
case WSAVERNOTSUPPORTED: MessageBox(NULL,"WSAVERNOTSUPPORTED",s,MB_OK); break;
case WSANOTINITIALISED: MessageBox(NULL,"WSANOTINITIALISED",s,MB_OK); break;
case WSAHOST_NOT_FOUND: MessageBox(NULL,"WSAHOST_NOT_FOUND",s,MB_OK); break;
case WSATRY_AGAIN: MessageBox(NULL,"WSATRY_AGAIN",s,MB_OK); break;
case WSANO_RECOVERY: MessageBox(NULL,"WSANO_RECOVERY",s,MB_OK); break;
case WSANO_DATA: MessageBox(NULL,"WSANO_DATA",s,MB_OK); break;
default: wsprintf(hello,"Unknown error %d",e);
MessageBox(NULL,hello,s,MB_OK); break;
}
}
---- cut ----